// +----------------------------------------------------------------------
// | 目录
// | step01:初始化百度地图引擎                initMapIos
// | step02:定位并打开地图                    getLocation
// | step03:打开地图                          openMap
// | step04:根据坐标获取地址名称              getNameFromCoords
// | step05:设置地图中心                      setCenter
// | step06:设置红色的标识                    setRedSign
// +----------------------------------------------------------------------
(function (window) {
    'use strict';
    var bMap = function () {
        this._init();
    };
    bMap.prototype = {
        _init: function () {
            if (typeof(api) === undefined) {
                console.log('该插件只能在apicloud下运行');
            } else {
                this.systemType = api.systemType;
                if(this.systemType === 'ios'){ 	// android自动加载
                    this.initMapIos();
                }
                this.getLocation(); //step1:定位并打开地图
            }
        }
        /**
         * step01:初始化百度地图引擎
         * 本接口仅支持 iOS 平台，android平台不需要初始化
         */
        ,initMapIos : function () {
            var self = this;
            var map = api.require('bMap');
            map.initMapSDK(function(ret) {
                if (ret.status) {
                    console.log('地图初始化成功，可以从百度地图服务器检索信息了！');
                }
            });
        }
        /**
         * step02:定位并打开地图
         * 用到了 openMap，getNameFromCoords，setCenter
         */
        ,getLocation: function () {
            var self = this;
            var map = api.require('bMap');
            map.getLocation({
                accuracy: '100m',
                autoStop: true,
                filter: 1
            }, function (ret, err) {
                if (ret.status) {
                    //输出{"status":true,"lat":37.86500626621444,"timestamp":1533697705474,"accuracy":65,"lon":112.58806852264404}
                    //console.log(JSON.stringify(ret));

                    //step1:打开地图
                    self.openMap(ret.lon, ret.lat);
                    //step2:根据坐标获取地址名称
                    self.getNameFromCoords(ret.lon, ret.lat);
                    //step3:设置地图中心
                    self.setCenter(ret.lon, ret.lat);
                    //step4:设置地图红色坐标
                    //self.setRedSign(); //有问题，todo
                } else {
                    console.log(err.code);
                }
            });
        },

        /**
         * step03:打开地图
         * @param lon
         * @param lat
         */
        openMap: function (lon, lat) {
            var map = api.require('bMap');
            //info的高度
            var info = $api.byId('info');
            var infoPos = $api.offset(info);
            //打开地图
            map.open({
                rect: {
                    x: 0,
                    y: infoPos.h,
                    w: api.winWidth,
                    h: api.winHeight - infoPos.h
                },
                center: {
                    lon: lon,
                    lat: lat
                },
                zoomLevel: 15,
                showUserLocation: true,
                fixedOn: api.frameName,
                fixed: true
            }, function (ret) {
                if (ret.status) {
                    //alert('地图打开成功');
                }
            });
        },

        /**
         * step04:根据坐标获取地址名称
         * @param lon
         * @param lat
         */
        getNameFromCoords: function (lon, lat) {
            var self = this;
            var map = api.require('bMap');
            map.getNameFromCoords({
                lon: lon,
                lat: lat
            }, function (ret, err) {
                if (ret.status) {
                    //console.log(JSON.stringify(ret));
                    var address = ret.address;
                    //我的位置
                    $('#info').text(address);
                }
            });
        },

        /**
         * step05:设置地图中心
         * @param lon
         * @param lat
         */
        setCenter : function(lon, lat) {
            var map = api.require('bMap');
            map.setCenter({
                coords: {
                    lon: lon,
                    lat: lat
                },
                animation:true
            });
        },

        /**
         * step06:设置红色的标识
         */
        setRedSign: function() {
            api.openFrame({
                name:'demo_mark_fixed_frm',
                url:'demo_mark_fixed_frm.html',
                rect:{
                    x:api.frameWidth/2-24,
                    y:api.frameHeight/2,
                    w:48,
                    h:48

                },
                bounces:false,
                vScrollBarEnabled:false,
                hScrollBarEnabled:false
            })
        }
    };
    window.bMap = bMap;
})(window);
